import { ref } from 'vue'
import { useUserStore } from '@/stores/user'
import { OneKeyMoveAPI } from '@/api'

const userStore = useUserStore()

export const oneKeyMoveUrl = ref(userStore.oneKeyMoveUrl || '/static/logo.png')
// 是否新能源车牌
export const checked = ref(false)

// 车牌号输入值
export const value = ref('')

// 是否显示键盘
export const showKeyboard = ref(false)

// 键盘显示状态
export const visible = ref(false)

// 联系信息
export const contact = ref('')

// 输入验证状态
export const contactValid = ref(false)

// 错误信息
export const contactError = ref('')

// 输入类型
export const inputType = ref<'1' | '2' | ''>('')

// 键盘输入处理
export function onInput(inputValue: string) {
  if (value.value.length < (checked.value ? 8 : 7)) {
    value.value += inputValue
  }
}

// 键盘删除处理
export function onDelete() {
  if (value.value.length > 0) {
    value.value = value.value.slice(0, -1)
  }
}

// 手机号验证
export function validatePhone(phoneNumber: string) {
  const phoneRegex = /^1[3-9]\d{9}$/
  return phoneRegex.test(phoneNumber)
}

// 邮箱验证
export function validateEmail(emailAddress: string) {
  const emailRegex = /^[\w.%+-]+@[\w.-]+\.[a-z]{2,}$/i
  return emailRegex.test(emailAddress)
}

// 联系信息输入处理
export function onContactInput(event: any) {
  const value = event.detail.value
  contact.value = value

  if (value === '') {
    contactValid.value = false
    contactError.value = ''
    inputType.value = ''
  }
  else if (validatePhone(value)) {
    contactValid.value = true
    contactError.value = ''
    inputType.value = '1'
  }
  else if (validateEmail(value)) {
    contactValid.value = true
    contactError.value = ''
    inputType.value = '2'
  }
  else {
    contactValid.value = false
    contactError.value = '请输入正确的手机号码或邮箱地址'
    inputType.value = ''
  }
}

export function generateQrCode() {
  if (!value.value || value.value.length < (checked.value ? 8 : 7)) {
    uni.showToast({
      title: '请输入正确的车牌号',
      icon: 'none',
    })
  }
  else if (!contact.value) {
    uni.showToast({
      title: '请输入联系信息',
      icon: 'none',
    })
  }
  else {
    const params = {
      plateNumber: value.value,
      contact: contact.value,
      contactType: inputType.value,
    }
    OneKeyMoveAPI.create(params).then((res) => {
      uni.showToast({
        title: '挪车码生成成功',
        icon: 'success',
      })
      oneKeyMoveUrl.value = res
    }).catch((error) => {
      console.error('生成挪车码失败', error)
      contact.value = ''
      inputType.value = ''
      uni.showToast({
        title: `生成挪车码失败，${error.message}`,
        icon: 'none',
      })
    })
  }
}

// 监听新能源状态变化，重置车牌号
export function watchChecked() {
  value.value = ''
}
